using System;

namespace RayDen.Library.Data.Import.Loader3DS {
    public static class ChunckIDs {

        public const UInt16 MAIN3DS = 0x4D4D;

        //>------ Main Chunks

        public const UInt16 EDIT3DS = 0x3D3D;  // this is the start of the editor config
        public const UInt16 KEYF3DS = 0xB000;// this is the start of the keyframer config

        //>------ sub defines of EDIT3DS
        public const UInt16 EDIT_MATNAME01 = 0xA000;
        public const UInt16 EDIT_MATERIAL = 0xAFFF;
        public const UInt16 EDIT_CONFIG1 = 0x0100;
        public const UInt16 EDIT_CONFIG2 = 0x3E3D;
        public const UInt16 EDIT_VIEW_P1 = 0x7012;
        public const UInt16 EDIT_VIEW_P2 = 0x7011;
        public const UInt16 EDIT_VIEW_P3 = 0x7020;
        public const UInt16 EDIT_VIEW1 = 0x7001;
        public const UInt16 EDIT_BACKGR = 0x1200;
        public const UInt16 EDIT_AMBIENT = 0x2100;

        //EDIT_MATERIAL
        public const UInt16 EDIT_MATDIFFUSE = 0xA020;
        public const UInt16 EDIT_MATSPECULAR = 0xA030;
        public const UInt16 EDIT_MATAMBIENT = 0xA010;
        public const UInt16 EDIT_MATSHININESS = 0xA040;

        //Textures
        public const UInt16 EDIT_MATMAP = 0xA200;
        public const UInt16 EDIT_MATMAP2 = 0xA33A;
        public const UInt16 EDIT_MATMAPBUMP = 0xA230;
        public const UInt16 EDIT_MATMAPOPACITY = 0xA210;
        public const UInt16 EDIT_MATMAPSPECULAR = 0xA204;
        public const UInt16 EDIT_MATMAPREFLECTION = 0xA220;
        public const UInt16 EDIT_MATMAPSHININNES = 0xA33c;
        public const UInt16 EDIT_MATMAPFILE = 0xA300;

        /*
         A300   asciiz   map's file name
   A351   intsh    map options
   A353   float    map filtering blur ( 7% -> 0.07 )
   A354 * float    1/U scale
   A356 * float    1/V scale
   A358 * float    U offset
   A35A * float    V offset
   A35C * float    map rotation angle
  /A360 * RGB      lum or alpha tint first color (default=00 00 00)
  \A362 * RGB      lum or alpha tint secnd color (default=FF FF FF)
  /A364 * RGB      RGB tint R channel color (default=FF 00 00)
   A366 * RGB      RGB tint G channel color (default=00 FF 00)
  \A368 * RGB      RGB tint B channel color (default=00 00 FF)
         */



        public const UInt16 EDIT_OBJECT = 0x4000;
        public const UInt16 EDIT_UNKNW01 = 0x1100;
        public const UInt16 EDIT_UNKNW02 = 0x1201;
        public const UInt16 EDIT_UNKNW03 = 0x1300;
        public const UInt16 EDIT_UNKNW04 = 0x1400;
        public const UInt16 EDIT_UNKNW05 = 0x1420;
        public const UInt16 EDIT_UNKNW06 = 0x1450;
        public const UInt16 EDIT_UNKNW07 = 0x1500;
        public const UInt16 EDIT_UNKNW08 = 0x2200;
        public const UInt16 EDIT_UNKNW09 = 0x2201;
        public const UInt16 EDIT_UNKNW10 = 0x2210;
        public const UInt16 EDIT_UNKNW11 = 0x2300;
        public const UInt16 EDIT_UNKNW12 = 0x2302;
        public const UInt16 EDIT_UNKNW13 = 0x3000;
        public const UInt16 EDIT_UNKNW14 = 0xAFFF;
        //>------ sub defines of EDIT_OBJ = CT    ;
        public const UInt16 OBJ_TRIMESH = 0x4100;
        public const UInt16 OBJ_LIGHT = 0x4600;
        public const UInt16 OBJ_CAMERA = 0x4700;

        public const UInt16 OBJ_UNKNWN01 = 0x4010;
        public const UInt16 OBJ_UNKNWN02 = 0x4012; //>>---- Could be shadow

        //>------ sub defines of OBJ_CAME = A
        public const UInt16 CAM_UNKNWN01 = 0x4710;
        public const UInt16 CAM_UNKNWN02 = 0x4720;
        //>------ sub defines of OBJ_LIGH = 
        public const UInt16 LIT_OFF = 0x4620;
        public const UInt16 LIT_SPOT = 0x4610;
        public const UInt16 LIT_UNKNWN01 = 0x465A;
        //>------ sub defines of OBJ_TRIM = SH
        public const UInt16 TRI_VERTEXL = 0x4110;
        public const UInt16 TRI_FACEL2 = 0x4111;
        public const UInt16 TRI_FACEL1 = 0x4120;
        public const UInt16 TRI_OBJECT_MATERIAL = 0x4130;
        public const UInt16 TRI_OBJECT_UV = 0x4140;

        public const UInt16 TRI_SMOOTH = 0x4150;
        public const UInt16 TRI_LOCAL = 0x4160;
        public const UInt16 TRI_VISIBLE = 0x4165;
        //>>------ sub defs of KEYF3DS    = 
        public const UInt16 KEYF_UNKNWN01 = 0xB009;
        public const UInt16 KEYF_UNKNWN02 = 0xB00A;
        public const UInt16 KEYF_FRAMES = 0xB008;
        public const UInt16 KEYF_OBJDES = 0xB002;


        public const UInt16 KEYF_OBJHIERARCH = 0xB010;
        public const UInt16 KEYF_OBJDUMMYNAME= 0xB011;
        public const UInt16 KEYF_OBJUNKNWN01 = 0xB013;
        public const UInt16 KEYF_OBJUNKNWN02 = 0xB014;
        public const UInt16 KEYF_OBJUNKNWN03 = 0xB015;  
        public const UInt16 KEYF_OBJPIVOT    = 0xB020;  
        public const UInt16 KEYF_OBJUNKNWN04 = 0xB021;
        public const UInt16 KEYF_OBJUNKNWN05 = 0xB022;  
        //>>------  these define the diff = rent color chunk types
        public const UInt16 COL_RGB = 0x000;
        public const UInt16 COL_TRU = 0x001;
        public const UInt16 COL_UNK = 0x003;
        //>>------ defines for viewport c = unks
        public const UInt16 TOP = 0x0001;
        public const UInt16 BOTTOM = 0x0002;
        public const UInt16 LEFT = 0x0003;
        public const UInt16 RIGHT = 0x0004;
        public const UInt16 FRONT = 0x0005;
        public const UInt16 BACK = 0x0006;
        public const UInt16 USER = 0x0007;
        public const UInt16 CAMERA = 0x0008; // 0xFFFF is the actual code read from file
        public const UInt16 LIGHT = 0x0009;
        public const UInt16 DISABLED = 0x0010;
        public const UInt16 BOGUS = 0x0011;
    }
}